Communications networks, such as the Internet, provide a transmission medium that enables personal computers, workstations, and other computing and communications devices to exchange information. A communication may involve a transmitting station, which transmits information via a network, and one or more receiving stations, which receive the information via the network. The process of communication via a network may comprise a plurality of tasks. Examples of tasks may include identifying an applications program that is requesting to transmit data, establishing a session which may distinguish a current request from a subsequent request that may be issued by the application program, and affixing a label to the transmitted data that identifies the transmitting station and the receiving stations. Additional tasks may include partitioning the transmitted data into a plurality data sub-units, and affixing a subsequent label that comprises addressing information that may be utilized by the network to direct each of the plurality of data sub-units in a communication path between the transmitting station and the receiving station, via the network. Other tasks may involving encoding each of the plurality of data sub-units as binary information that may be transmitted via electrical or optical pulses of energy via a transmission medium.
An individual task may be referred to as a protocol. The protocol associated with communications via a network may be implemented in software and executed by a processor within a transmitting station or receiving station. In many implementations, the software may be partitioned into a plurality of software modules where a software module may perform tasks related to one or more protocols. A protocol may be defined based on a protocol reference model (PRM) such as defined, for example, by the International Organization for Standardization (ISO). A protocol defined within a PRM may be referred to as a protocol layer, or layer. The separation of software into protocol software modules may increase the flexibility of software development by enabling a software module to be developed to perform specific function that are related to a protocol layer. Thus, changes in the functionality of a subsequent protocol layer, which may require modifications to software modules that perform functions related to one protocol layer, may not require modifications to software modules that perform functions related to another protocol layer.
Two protocols that may be utilized for communications via a network are the transmission control protocol (TCP) and the Internet protocol (IP). TCP provides a means by which transmitted data, which may be referred to as a packet, may be reliably transmitted between a transmitting station and a receiving station via a network connection. A transmitted TCP packet may comprise information that indicates, to a receiving station, an application, executing at the transmitting station, which transmitted the data. The transmitted TCP packet may also comprising information that indicates an application, executing at the receiving station, which is to receive the data. The transmitted TCP packet may comprise sequence number information that enables a receiving station to determine the order in which a plurality of TCP packets were transmitted by the transmitting station. The receiving station that receives the currently transmitted TCP packet may have previously transmitted a TCP packet to the transmitting station that is transmitting the current TCP packet. The currently transmitted TCP packet may comprise acknowledgement information that indicates a sequence number associated with a TCP packet that was received by the transmitted station, which had been previously transmitted by the receiving station that is to receive the currently transmitted TCP packet. TCP may assert flow control upon communications between a transmitting station and a receiving station by limiting the number of TCP packets that may be transmitted by the transmitting station to the receiving station. TCP flow control may enable a transmitting station to cease transmission of subsequent TCP packets until acknowledgement information is received from the receiving station that indicates that at least a portion of the previously transmitted TCP packets have been received by the receiving station.
IP provides a means by which TCP may transmit TCP packets via the network. The TCP packet may be contained within an IP datagram that comprises information utilized to transmit the IP datagram via the network. The IP datagram may comprise a source address that is associated with the transmitting station, and a destination address that is associated with the receiving station. The source address and/or destination address may be addresses that identify the transmitting station and/or receiving station within the network. The IP datagram may comprise protocol information that indicates that it contains a TCP packet.
Information that comprises sequence number information and/or acknowledgement information, may be referred to as state information. State information may be maintained within a transport control block (TCB) at the transmitting station and/or receiving station that are engaged in an exchange of information via a network. An individual exchange of information may be referred to as a session. A received TCP packet and/or IP datagram, for example, may comprise information that identifies a TCB. The TCB may be associated with a TCP session, for example. Upon receipt of the TCP packet and/or IP datagram, for example, the receiving station may initiate a process to locate a corresponding TCB. This process may comprise performing a lookup operation to locate the TCB. The TCB may be associated with a network connection that is utilized when receiving the packet via the network. The TCB may comprise a data structure that maintains state information about the network connection.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.